Repository navigation
Release v0.9.0 - #14
Merged
Merged
Conversation
…sales and event series
… settings, all 56 webhook names, events series_key
…he p2a-api review
…tle (2.16c) createEventSeries takes fromEventKey: an event already set up becomes the first date under its own key and every other date is a copy of it; name and chartKey are then left out. Every date of a series carries the series' plain name. Matches seatmap slice 2.16c.
Adds releaseSeasonLapsedOffers (POST /v1/seasons/{key}/renewal-offers/release-lapsed, no body, header replay, 202 with the job). retrieveSeasonHostedRenewals pages with cursor and limit (1-500) and answers nextCursor, and listSeasonRenewalOffers pages the same way (1-100). createSeasonRenewalOffers answers 201 {offers} for 100 contracts or fewer and 202 {job, batchId} above that. The bring-across (createSeasonHolderImportFromSeason) answers 202 with a holder_import job above 100 holders. Renewal emails take up to 20,000 offer ids; above that, 422 too_many_offer_ids.
…e_abandoned (p2b) The public API changes in p2b (b88ed794e..ee7df2921): season_date_cancel_void_job_id names the date_cancel_void job a date cancel starts (season.ticket.voided reason date_cancelled); season_holder_import_rows_per_call sizes a create_season_holder_import call by its dates, now 2 to 50 (a call over it raises SeatLayerValidationError invalid_rows with maxRows); update_season documents singleTicketDates.jobRefused and its exact-retry guard; create_event_series documents 409 create_abandoned. Both helpers are module functions exported from seatlayer.
…b audit) updateEventSeries sends only the prices that change: each date keeps its own price for every category or tier left out. A season's null transfer or return cut-off means the club default from Settings > Ticket site, or until the date starts when the club has none. Holder transfers and returns through the secret key are not stopped by the club's customer switches; cut-offs still apply.
…part C) A date its season cancelled never opens again: moving its sales to testable or live, or reopening it, answers 409 season_date_cancelled, and an event series "sales on" leaves it closed as a failed item of the job (season_date_cancelled; not in failedDates). A cancelled date can't be moved, postponed, replaced or marked as taken place: 409 performance_cancelled.
…release_season_block; season.block.ready/released webhook names; webhooks accept every typed name; the 202 date-leave answer guard. No version bump: publish only once the phase 4 API is on production
…on seats sections joined under 0.9.0 (2026-11-11)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.9.0 for
seatlayeron PyPI: 0.8.0 → 0.9.0. One commit on top of the phase 4 PR #13, which sits on the season 2a PR #12.Merge order: #12, then #13, then this PR, each with a merge commit (never squash). Until #12 and #13 merge, this PR's diff also shows their commits. The version commit itself is
730cff09.What changes
pyproject.toml(version) andsrc/seatlayer/__init__.py(__version__), which must agree.CHANGELOG.md: "Next: 0.9.0" (season seats, [0.9.0] Season seats: set_aside_season_block, retrieve_season_block, release_season_block, inventoryMode #13) and "Unreleased" (season 2a, Season 2a server operations (part A) #12) are joined under## 0.9.0 (2026-11-11): the season seats lines first, then the season 2a lines. Nothing else in them changes.Why now: the phase 4 API is live on production (release A, d349e1639, passed +60 on 11 Nov). Every method in 0.9.0 has its route live.
Checks on this commit, locally, the steps of
ci.yml:pip install -e ".[dev]",ruff check src tests,mypy,pytest -q(133 passed), on Python 3.14 locally.After the merge (Orchestrator): tag this PR's merge commit and push the tag.
release.ymlre-runs the gate, refuses a tag that disagrees with either version literal, builds, checks the wheel, and publishes through PyPI Trusted Publishing (environmentpypi, no reviewers).Rollback: see #13 ("Rollback"). 0.9.0 only adds; 0.8.0 stays installable.